package day01;

/**
 * @author yangwenqi
 * @decs TODO
 * @date 2025/4/16
 */
/**
 4.该实例为定义一个成绩计算类。
 类中包含的内容有：
 1、三个float类型的成员属性（Java成绩、C#成绩、数据库成绩）；
 2、对三个私有属性的公开的getter/setter方法；
 3、一个无参的构造方法和一个带参数的构造方法；
 4、计算三个科目的平均值的方法；
 5、计算三个科目的总成绩的方法；
 6、程序入口main方法。
 在main中分别通过有参和无参的构造方法实例化成绩计算类的对象实体并传入成绩参数。
 再通过对象调用计算平均值和总成绩的方法打印输出。
 在计算平均值和总成绩的方法中，分别获取到属性的值进行计算。
 */

public class Score {
    private float javaScore;
    private float cScore;
    private float databaseScore;
    // 无参构造方法
    public Score() {
    }
    // 带参数的构造方法
    public Score(float javaScore, float cScore, float databaseScore) {
        this.javaScore = javaScore;
        this.cScore = cScore;
        this.databaseScore = databaseScore;
    }
    // Getter 和 Setter 方法
    public float getJavaScore() {
        return javaScore;
    }
    public void setJavaScore(float javaScore) {
        if (javaScore > 100||javaScore < 0) {
            this.javaScore = 0;
        }
        else{
            this.javaScore = javaScore;
        }


    }
    public float getCScore() {
        return cScore;
    }
    public void setCScore(float cScore) {
        if (cScore > 100||cScore < 0) {
            this.cScore = 0;
        }
        else{
            this.cScore = cScore;
        }
    }
    public float getDatabaseScore() {
        return databaseScore;
    }
    public void setDatabaseScore(float databaseScore) {
        if (javaScore > 100||javaScore < 0) {
            this.databaseScore = 0;
        }
        else{
            this.databaseScore = databaseScore;
        }
    }
    // 计算总成绩的方法
    public float TotalScore() {
        return javaScore + cScore + databaseScore;
    }
    // 计算平均成绩的方法
    public float calculateAverageScore() {
        return TotalScore() / 3;
    }
    // 程序入口 main 方法
    public static void main(String[] args) {
        // 使用无参构造方法实例化对象并设置成绩
        Score score1 = new Score();
        score1.setJavaScore(85.5f);
        score1.setCScore(100f);
        score1.setDatabaseScore(88.5f);
        // 使用有参构造方法实例化对象并传入成绩
        Score score2 = new Score(98.0f, 89.5f, 95.0f);
        // 输出第一个对象的计算结果
        System.out.println("无参构造对象计算结果：");
        System.out.println("总成绩：" + score1.TotalScore());
        System.out.println("平均分：" + score1.calculateAverageScore());
        // 输出第二个对象的计算结果
        System.out.println("\n有参构造对象计算结果：");
        System.out.println("总成绩：" + score2.TotalScore());
        System.out.println("平均分：" + score2.calculateAverageScore());
    }
}


